# APP ID：20230611001708588
#
# 密钥：WY8D_DpPbzHxVxg6Pwbj
import time

import requests
import random
import json
from hashlib import md5

# Set your own appid/appkey.
appid = '20230611001708588'
appkey = 'WY8D_DpPbzHxVxg6Pwbj'



# 翻译函数
def translate_text(query, from_lang, to_lang):
    """
    翻译函数，将指定文本从一种语言翻译为另一种语言

    参数:
        query (str): 需要翻译的文本
        from_lang (str): 源语言代码（如 'zh' 表示中文）
        to_lang (str): 目标语言代码（如 'en' 表示英语）

    返回:
        str: 翻译后的文本
    """
    # API 地址
    endpoint = 'http://api.fanyi.baidu.com'
    path = '/api/trans/vip/translate'
    url = endpoint + path  # 拼接完整请求地址

    # 生成 salt 和 sign
    def make_md5(s, encoding='utf-8'):
        return md5(s.encode(encoding)).hexdigest()  # 生成MD5签名

    salt = random.randint(32768, 65536)  # 生成随机盐值，用于签名计算
    sign = make_md5(appid + query + str(salt) + appkey)  # 计算请求签名

    # 构建请求参数
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}  # 设置请求头
    payload = {
        'appid': appid,     # 百度翻译API分配的应用ID
        'q': query,         # 待翻译的文本内容
        'from': from_lang,  # 原始语言代码
        'to': to_lang,      # 目标语言代码
        'salt': salt,       # 随机数，用于增强签名安全性
        'sign': sign        # 请求签名，用于身份验证
    }

    # 发送POST请求
    r = requests.post(url, params=payload, headers=headers)
    result = r.json()  # 获取JSON格式响应结果
    print(result)  # 打印返回结果便于调试

    # 提取翻译结果
    if "trans_result" in result and len(result["trans_result"]) > 0:
        return result["trans_result"][0]["dst"]  # 返回翻译后的文本
    else:
        # 如果翻译失败，抛出异常并显示错误信息
        raise Exception("Translation failed: {}".format(json.dumps(result, indent=4, ensure_ascii=False)))

# 示例使用
# translated_text = translate_text("对象名称", "zh", "en")
# print(translated_text)


def translate_chinese_to_en_jp(query):
    """
    将中文文本翻译成英语和日语

    参数:
        query (str): 需要翻译的中文文本

    返回:
        tuple: 包含英文和日文翻译结果的元组 (english_text, japanese_text)
    """
    english_text = translate_text(query, "zh", "en")
    time.sleep(1)  # 等待1秒
    japanese_text = translate_text(query, "zh", "jp")
    return english_text, japanese_text

# 示例使用
translated_texts = translate_chinese_to_en_jp("获取工况思考过程")
print(translated_texts)  # 输出: ('Object Name', 'オブジェクト名')


